Peer-to-peer (P2P) systems employ a network which connects participating machines having equal or similar capabilities and responsibilities. These systems perform tasks without the coordination of a conventional server (or with minimal set-up coordination by a server).
A P2P network is a distributed system, without any centralized control or hierarchical organization, in which each node runs software with equivalent functionality. The current Internet is composed of two components: end hosts and routers. The end hosts use the routers to deliver data packets to each other. The role of the routers is to store and forward the data packets for the end hosts. The end hosts in general do not forward packets for other end hosts in this model. As seen in FIG. 1a, a P2P network is an overlay network constructed with a variety of wired and wireless end hosts, where each end host will forward packets for other end hosts. The overlay is a data structure comprised of objects each representing a peer in the P2P network.
By way of another example, FIG. 1b shows a high-level depiction of a P2P system 100b. The system 100a includes a collection of peer entities (102-112) having equal or similar capabilities and responsibilities. In one example, the peer entities (102-112) may correspond to independent personal computer devices coupled together via an Internet or intranet. The peer entities (102-112) can directly transfer files or other information between themselves (as indicated by exemplary communication path 114) without the aid of a server. A general introduction to P2P systems can be found in D. S. Milojicic, V. Kalogeraki, R. Lukose, K. Nagaraja, J. Pruyne, B. Richard, S. Rollins, and Z. Xu., “Peer-To-Peer Computing,” Technical Report HPL-2002-57, HP Lab, 2002.
P2P systems offer many benefits over conventional client-server strategies. For instance, P2P systems have the ability to automatically and freely expand and contract without central coordination. But this lack of supervisory coordination also poses various challenges. For instance, it may be desirable to have the P2P system act in concert to perform some global function. In various instances, it may be desirable to collect data from the participants of the P2P system. Or it may be desirable to disseminate information to the participants in the P2P system. With a client-server approach, a server can simply poll its clients to collect information from its clients, or broadcast information to its clients to disseminate information to its clients. But data gathering and dissemination becomes more problematic in a P2P system because it is formed by a loose alliance of interconnected peers that can freely come and go. Adding centralized conventional reporting functionality may have the effect of complicating the P2P system, and thus reducing its flexibility and utility.
In a P2P network, an end host is assigned unique identifier (e.g., a ‘hostID’). This hostID is generally generated using some hash methods from the IP address of the host and/or a public key of the end host. Each end host maintains a “routing table”. By using this routing table, the end host can decide the next peer to route a message to (e.g., the “next hop” to the peer). The basic service provided by a P2P network is a “lookup” service. By this lookup service, the P2P network can map a “key” to an active end host in the P2P network which owns the key.
Since the P2P network is an overlay built based on end hosts, it does not need to change or extend the underlying Internet routing infrastructure. New services based on P2P technology can be rapidly deployed and tested without the Internet service providers' involvement.
When a peer in a P2P network moves, such as when the peer is a mobile computing device (i.e., a cellular telephone, a wireless computer, etc.), the peer's Internet Protocol (IP) address can change. In various circumstances, a change in the IP address can prevent a peer from communicating with its peers. For such circumstances, there is a an exemplary need in the art for an end-to-end mobility management technique to solve the problem of using a peer's name to resolve its changed IP address, and to solve the problem of notifying the peer's peers of a change in the peer's IP address.